\chapter{Opal для пользователя}

Или как управлять моделями и алгоритмами.

\section{Задачи, модели и методы}

\section{Используемая терминология}

Перед тем как будет подробно описана работа с моделями в программе Opal, необходимо установить используемую терминологию, чтобы случайно не ввести в заблуждение.

Для полного описания задачи оптимизации используется несколько основных понятий.

Задача — отдельное приложение, которое может быть подключено к Opal. Приложение может быть как отдельным исполняемым файлом, так и некоторым скриптом на интерпретируемом языке. Для работы важно, чтобы приложение могло взаимодействовать на уровне стандартных потоков ввода-вывода для того, чтобы ему можно было передавать запросы. Термин <<задача>> используется в силу того, что этот объект очень схож в теми задачами (процессами, tasks), которые используются в операционных системах.

Модель — набор параметров, которые описывают условия для задачи нахождения оптимального управления. Фактически, моделью является набор значений, как то период времени, на котором происходит моделирование ситуации, начальные условия, параметры для функции перехода, ограничения на управление и др.

Метод — функция, которая по заданным начальным параметрам и алгоритму просчитывает решение для данной модели. Для одной модели может быть создано несколько методов ее решения.

Решение модели — как процесс, это работа выбранного метода, т.е. просчитывание по алгоритму модели с целью найти те параметры, которые будут удовлетворять заданным условиям; как результат, это результат работы алгоритма. Терминология будет яснее, если представить ее со стороны решения уравнения, потому как с какой-то стороны модель и является некоторым уравнением или системой уравнений.

В одной задаче может содержаться несколько моделей. Это удобно, когда модели по структуре схожи и можно эффективно использовать исходный код, не разбивая задачу на множество почти одинаковых. Частным случаем решения модели является решение без управления. В самом деле, если никак не управлять процессом, процесс все равно будет протекать, но в какую сторону - это уже другой вопрос.

Организацию всех структур можно увидеть на рисунке:

\section{Работа с моделями}

Модель — основная сущность для Opal. Создав единожды, модель можно отредактировать позже, присоединить или отсоединить от нее методы, создать копию (как поверхностную — только сама модель, — так и полную, включая все методы).

По сравнению с подходом, когда одно приложение решает одну задачу, концепция моделей имеет большое преимущество. Можно настроить несколько моделей на выполнение или выбрать несколько вариантов одной модели, после чего запустить их, а потом, дождавшись результата, проанализировать. Не приходится отвлекаться для того, чтобы запустить новую задачу, после того, как прошлая закончила свою работу.
Для того, чтобы лучше всего разобраться в том, что представляет из себя модель, можно рассмотреть простой пример.

Ответственное задание. Младшего научного сотрудника Василия холодной зимой отправляют в одинокий домик где-то в тайге для того, чтобы он собрал важные научные сведения, а после чего привез результаты обратно в НИИ (гидрологии, экологии, биологии, геологии, в, общем, не важно чего). Избушка находится в столь глухой местности, что связь очень плохая, еду всю нужно везти с собой, отопление дровами, которые еще предстоит нарубить. Благо ходит за ними далеко не нужно. Работу надо сделать быстро, потому что домой хочется вернуться скорее. Главное условие задачи: выполнить установленный объем работ и выжить.

Теперь можно перейти к формальному описанию задачи. Основные ресурсы здесь: энергия (когда Вася спит или ест, она восстанавливается, когда работает или заготавливает дрова — тратится), количество еды, количество выполненных заданий, температура в доме. Все ресурсы представлены целыми числами. 

Будем считать единицей измерения времени один час. Вася может делать следующие действия каждый час:
1. поспать (+4 к энергии), можно только с 21:00 и до 9:00;
2. покушать (+6 к энергии);
3. сделать задание (-10 к энергии);
4. затопить печь (-6 к энергии, +5 градусов в доме).
Каждый час температура в доме падает на один градус. Если температура опустится ниже отметки в 15 градусов, то дополнительно будет тратится 2 ед. энергии, потому как Вася будет пытаться согреться. Энергии не может быть больше 100 пунктов.

По ходу дальнейшего описания работы с моделями в системе Opal, будем обращаться к этому примеру для наглядного представления обсуждаемой темы.

\section{Создание новой модели}

\section{Редактирование параметров модели}

\section{Присоединение метода к модели}

\section{Копирование модели}

\section{Удаление моделей и методов}

\section{Запуск решения модели}

\section{Построение графиков}

\section{Составление отчетов}

\section{Гибкое планирование}